It has been a long time since I have written anything on this blog. Yep, long indeed; between the burn-out and my current studies, I had to take a step back a little bit but that doesn't mean I am totally out of the community.

That said, we aren't talking about that today aren't we? if the title doesn't make it obvious already. Then let me show you what I have in hand.

Ta-da! Introducing "The Graph Heritage", a useful Discord bot that allows you to search for frequency response graphs across more than 15+ databases. This was the cultivation of me not having sleep and constantly coding in Javascript and then rewriting in Typescript (For fun) for more than 10 hours a day for 3 weeks. It's painful but it works.

This bot if anything should cover most of the database from as well as several other databases like my database.

Well, not much to say for the introduction isn't it? If you want to try out the bot. Feel free, the link is right below this paragraph. But read on if you want to understand how to use it (especially server owners), its current caveats as well as some stuff that I will implement later on.

Of course, I will leave my Discord right under for people who has questions. But please, read this article to know how to use the bot.

Click the image below to check out my Discord

Let's started with the simplest thing


The basic:

For a normal user, the command is straightforward as it is. Just type something that follows this template

a!sq <query1> <query2> <query3>...

Now, for people who are unfamiliar with using a command system, stuff like <query1>, <query2> are just placeholders. When you use the bot, you would actually replace it with the keywords you want to search.

So, for example, if I want to find the frequency responses of the Symphonium Helios? Simple, just type a!sq helios and the bot will do its job.

Simple isn't it

Usually, the bot should try to find the database that has the most useful data for you. In a less fancy way: The database that contains the most measurements that is related to what you search would show on the front page.

And yes, before you ask, you can compare between 2+ (Maximum 4) IEM at the same times. Let's say I want to compare between the Symphonium Helios and the Unique Melody MEST MKII?
The command in question would be: a!sq helios "Mest MKII"

Work as expected. You would notice that I used double-quotes (") for the MEST instead. Why is it?
The reason is simply because of how the arguments are divided with the bot. Using double quotes allows you to use whitespace in your keywords. You really don't want the situation below to happen.

Nope, suddenly the bot returns the incorrect result, there is no MEST MKII in this graph, this is because instead of searching "MEST MKII" as a whole, it searches MEST and MKII individually, which is not what you want.

But let's say that you want to check other databases then. Maybe some database like mrs might have different measurement results?
In case the tooltips haven't been obvious to you already, all you need to do is add -db mrs or --database mrs or even --database=mrs to anywhere in your command

For example: a!sq helios "Mest MKII" -db mrs

Ok, what about Targets then? In that case, just add target: before the target you want to search.
For example: a!sq target:harman2019

That's all you need to use the bot. Now if your brain is basically fried, You can stop here. Go into Discord and invite the bot (or join the servers that have it invited). Command away!

Of course, there is more stuff behind this bot when it comes to searching graphs. Like normalizing graphs. But I leave that for you to read a!sq --help to understand.

Server Managers who want to use the bot in your server, read more below.

Setting up the bot:

I am not really familiar with how most Discord bots would make their setup but I try to make this as straightforward as possible. And I have to make this clear firsthand:


With that said, you should be able to set up the bot quite easily. After all, this is all you need to use.

Type a!server

After you add the necessary channel, the bot should work. Note that only the user who has the "Manage Channels" permission can execute these commands

Note: Some server has a system where @everyone is denied of viewing channels as a barrier for their custom implementation for verification purpose. Sadly there is nothing I can do since it will be really unsafe (The bot needs the "Manage channel" permission which I will not allow it to have it).

If this happens, specifically give it permission to view all channels manually. The bot should have as much permission as a typical server member to be able to work.

That's all


Yes, as far as my development skill goes, everything has its own limitation. I believe the bot will work really well as a "search engine" for frequency responses, but I will have to tell you what this bot cannot do

  • Cross compare between databases is not supported: This is an intentional thing. Cross comparing between databases generally might cause more harm than good. And no, while you can consider that the current way the bot work right now makes this limitation, do understand that I make several considerations when it comes to how I would want to build this bot and this is what I go with.  
    I mean, I would implement this if I want, but I would have to make sure the person who use it knows what they are doing.
  • There is only a maximum of 4 graphs at the same time (right now): Technically 3 for non-Patreon users and 5 for Patreon users later on  (I will explain this bit later). 3/4 is plenty enough you probably don't need more.
  • Comparing with more than 2 targets is not yet supported: Might come back to cross this out of the TODO list later. Don't worry, It will be done, I am just too lazy to do it right now
  • Baseline function is not yet supported: Same reason as above
  • The usage of bots in threads is not yet supported: Same reason as above :/

Patreon and Monetization:

This is obvious but I let's be real: making this takes time and effort. I poured a lot of my sanity into it while knowing that I won't have much in return (In all honestly, the burden of maintaining a program is usually... the after-service).
There is also another reason is that at a certain point this bot would need to be sustained with money. At least for now, I have the will to maintain this bot so there is that.

That said, it is solely for monetization that I would have to limit some of the bot functions after this month (Consider this month is a free trial). This includes:

  • Reduce the number of graphs that can be compared to 3

That's all.

Wait, that's it?

Yes, what are you expecting? Rather than reducing the function, putting more function and rewarding it through Patreon is better imho . Consider if you spend 3$ for the Copper Patreon tier or above, these are what you would receive later down the road:

  • Reduced command cooldown to 5 seconds
  • Custom default options, allowing you to set the default maximum graphs as well as preferred databases when searching
  • Ability to have a custom profile that shows your favorite IEM/Target curve
  • Got to experience new features as Beta/Alpha testers.

I will think of more features as people come in and suggest them. Of course, everything has to take into consideration how useful it is to the mass.

But really, this project did take a lot of time so Patreon is really appreciated. Helps me do cooler stuff in the future as well :p. But of course, for the current supporter of my Patreon, thanks a lot.


Now, for some of the last part:

Potentially Asked Questions:

Q: Why "The Graph Heritage"? Why does the command prefix is a!?
A: Reason for the prefix is pretty much because of this.

Yep, the project code behind this bot is called "akyuu_graph", weebs probably caught on with the first image of this blog already that this is the direct reference of Hidea no Akyuu from Touhou Project.

But that doesn't explain the name "The Graph Heritage", well, that boils down to one of my favorite Touhou printed works 東方鈴奈庵 ~ Forbidden Scrollery. "鈴奈庵" is roughly translated to "Bell Hermitage" but for "Heritage" kinda works better for naming reasons. No matter how weird this name is to be honest.

Q: What is on your mind right now after releasing the bot?
A: I can only think of the fact that it can crash within 12 hours of publishing this article. Development life is fun.

Q: How are you going to deal with the upcoming change to Discord Intents
A: I probably would apply for it. I doubt the bot will reach 100+ servers usage though

Q: Crinacle database is not available for searching, can you add it in?
A: Crin personally requested me to not use his database due to the existence of SquigBot. I respected this decision so his database was removed during the Beta Testing phase.

Q: What about Antdroid (Audio Discourse) database?
A: Someone tells him that I asked him pretty please?

Q: Would there be any more new features outside of what you just said?
A: Well, I am not obliged to tell you all of what I plan to work on. It's a secret, maybe you can yoink some of those secrets out if you join my server overtimes :).
But just for you know, this project is just the beginning

Q: What will happen to your Audio Review content?
A: I am slowly getting back to it. We should have something this month.

Q: Why do you use white theme Discord?
A: I made an Arch Linux Rice that is centric on white. Yes, I coded all of these with white theme. Give me time, I will make the dark version later

Q: Bruh, you need to sleep
A: Good question

Yeah, you are right, I am going to sleep, see you later.

For this month's Patreon, thanks for supporting me in getting this project on:

Not Daijoubu
Jeisson silva