The Story of NusachDB and Nusach Resources

This repository is a labor of love: a love for Jewish liturgy and its melodies, and for Judaism and its tradition. It all started when, as a kid, I learned quite a few Jewish songs at my elementary school in Rio de Janeiro, and later, before my bar-mitzvah in the US, I realized that people sang a different set of melodies. Before I started religious school in the US in 7th grade, I had never even been to a Shabbat service. All of a sudden, I was confronted with several hours' worth of melodies that I didn't know, many of which I would come to learn in preparation for my bar-mitzvah. It made me want to learn them all!

But this is hard to do. And this notion was put aside throughout high school, until, in college, my social group decided to put together a seder for Pesach. Someone went and printed some sheets with songs, and some of us tried to conduct the seder. It was a total disaster, of course. The sheets were completely incomplete, missing important things, and I was wondering how it could be that I, who had not had a strong Jewish education at all, could even tell that things were so wrong. It must have been elementary school in Rio de Janeiro, and long seders all in Hebrew at my great-aunt's house, led by a cousin who was a rabbi. I just had to know how to have a proper seder!

Luckily, I had friends who knew much more than me who took the time to teach me -- and the internet. The next year, I made songsheets so that the musically-literate non-Jewish attendants could participate, and to do that, I searched for melodies online. I came across several websites with audio during my research, which I bookmarked in my browser. The outcome was a very interesting seder experience that continued to grow in coming years as I did more research. At the same time, I was also starting to attend Shabbat services, and the opportunity to learn to lead maariv eventually came up, and then Kabbalat Shabbat. My list of bookmarks grew.

It grew so much, in fact, that it became unwieldy, and when I wanted to find a melody, I didn't know which sites had what. (By then, there were more than 30 sites!) So I decided to take some notes -- and if I was going to take some notes anyway, why not put them on the internet for everyone? I was a grad student at MIT at the time, so I had some webspace, and I stuck my list up there.

Eventually, I left MIT, and Nusach Links, as it was called then, passed into oblivion. I was going to need a website to use as a portfolio for a career in software development, however, so I got offtonic.com and put Nusach Links back up. In pursuing this career in software development, I learned quite a bit, as one needs to do, and one of my projects with this new but still rudimentary knowledge was to revamp Nusach Links. In time the list had grown, so it was time to categorize the list and somehow rank it. And "links" had a very 90's feel to it -- while the site was a list of links, it was also much more extensive than that. The name became Nusach Resources.

During this time there was also a dream, that original dream: to learn every liturgical melody we have as a nation. I had begun to do that, systematically, by going through my list of links and transcribing the melodies I found there. Project Nusach, I called it. (There are other things called Project Nusach out there, so I eventually dropped the name.) Unfortunately, that didn't go anywhere -- and neither did another attempt two years later. But in May of 2014, I finally built a system to organize and display these melodies I would transcribe, which I called NusachDB, since it's essentially a database of nusach. I revamped the back-end of Nusach Resources to make it easier, and since the first Baruch Haba was added on May 22, 2014, I have been working nearly every day to bring more melodies to NusachDB and more sites to Nusach Resources.

The impossible dream is to catalog every single melody anybody has ever sung in a Jewish liturgical context. The dream that is not impossible but merely implausible is to at least have a selection of melodies for every text that has a melody in every service. This process will take years of daily labor, at the least. Someday there will be thousands of melodies here, and a service leader will be able to choose one at will from a list whenever it's time to learn a new service or spice up an old one.

This is NusachDB.

Permalinks and the Database

Permalinks are a reasonably future-resistant way of accessing individual sections or tunes in NusachDB, as well as a nifty way to index the database. You can kinda figure out how they work by hacking their URLs, so I might as well just explain it so that you can take full advantage of this tool. Basically, it works like this: every section of the liturgy (like the Amidah, or the P'tichah of Ps. 96, etc.) has its own sid, and every tune has its own tid. If you navigate to http://offtonic.com/nusach/index.html?sid=1423, for example, you'll go to the L'chah Dodi section; the "?sid=1423" specifies that. If you insert some other number, you'll get a different section.

However, there's a bit more to it. Let's look at the permalink for L'chah Dodi's Melody 1: http://offtonic.com/nusach/index.html?nid=11&sidpath=,1423&tid=1040&o=1. The "tid=1040" specifies the tune; that's all good. The other parameters provide the rest of the context. "nid=11" represents the Kabbalat Shabbat service; "sidpath=,1423" represents the path through sections to get to the tune (the only section above the tune is the one with sid=1423, L'chah Dodi), and "o=1" is the disambiguation ordinal for when there are multiple sections or tunes with the same sidpath. The same path? How does that work?

Here's where it gets a bit more interesting. Many sections and tunes actually repeat. For example, the Sh'ma is present in many different services. There's just one Sh'ma section in the data, with one sid, but it gets referenced in multiple places. All of this context data uniquely identifies the one instance of it that you're currently looking at.

Now, sections and tunes do get reorganized from time to time; I may decide to split the sections up differently, for example. However, the sid's and tid's will probably not change. As much of the context will be matched as possible (this algorithm is not perfect but it will improve); however, without context, you can be sure that you will at least get the specified tune or section if it still exists, even if it's moved to a different sidpath.

This system is useful in a few ways. First, it's trivial to link someone to a particular tune: just send them the permalink URL. Second, you can explore NusachDB tune by tune simply by typing in a tid and seeing what's there. While it's likely that at least some tunes and sections will be removed for whatever reason (for example, they might be merged with a different tune), every other sid or tid will have a section or tune associated with it. By the way, the numbers don't really mean anything; new sections and tunes will be numbered in chronological order, but old ones were numbered just by their order in the file.

I hope this is useful!

About the Site and the Workflow

The site engine is writen in PHP, with a MySQL database model. It's all static content, pretty much, so the code is pretty small. I did the design myself -- as you can tell, front-end design is not my strong suit!

The lists of sites, services, tunes, etc. are done in XML. A PHP script drops all of the MySQL tables and repopulates them from these XML files at deployment time. While there are great reasons not to use XML, I prefer it greatly over JSON for its human readability, and since the XML files are parsed mostly just once, there are no inefficiencies to speak of. Thus, when adding sites or tunes, I simply edit the XML file and run the deployment script. The project is hosted on BitBucket, and the website on SiteGround. Deployment is simply a matter of running git pull and the deployment script in the server's nusach directory. Recording/sheet music icons are from Font Awesome.

Music transcriptions are painstakingly done by listening to tracks and writing down the notes in Sibelius. The score is exported as a png then cropped and scaled in Gimp. Since all images are hidden in submenus, the src attribute of the img tags are left blank until the submenu is opened to reveal the image, loading images lazily and thereby greatly reducing loading times.

By the way, yes, I do this all myself. Perhaps someday I'll be open to working with other people on this project, but for now, it's just me! Of course, more features are planned, both in back-end and front-end. Keep checking back!

How You Can Help

While I'm doing all the work myself for now, you can still help. If you know tunes, I strongly encourage you to record them and put them online somehow. There are sites (like Shituf Piyut) that let you upload such things, or DropBox or Shir Halev. If you put them on your own site, please make sure to let me know and I'll link to it. The other way you can help is to find sites that I don't have on my list and email me the links. If you speak a non-English language, especially Hebrew, Russian, Arabic, German, Dutch, Bulgarian, Turkish, etc., you can help greatly by finding resources in your language. I also have a lot less Spanish coverage than I would like, and there are probably a lot more French sites out there with recordings. If you have tapes from your father of authentic nusach from his hometown, you can help by digitizing those tapes -- a tape digitizer costs about $40 -- and putting those recordings in a public place online. NusachDB is a project to catalogue, preserve, and present Jewish liturgical melodies, and the best way to help with this project is to preserve and present your melodies.

About Me

I'm Mauro Braunstein, living in the greater Boston area. I am a software developer by day, and a software developer by night too because I make this site. My interests include my wonderful wife, Judaism, ethnomusicology, singing Jewish a cappella, playing Nintendo games and similar works, composing, and eating the widest possible variety of food that I can stuff in my mouth. I'm not trained as a rabbi or cantor or anything like that; I'm stritcly a very interested layman! In terms of Judaism, my beliefs are generally to the far left of Reform, but I identify as traditional egalitarian. I was raised Ashkenazic, which I am on my mother's side, but I'm Sephardic from Egypt, as well as from Italy, Spain, and Russia, on my father's side. This site generally assumes Nusach Ashkenaz, but it includes plenty of melodies and resources from other branches of the Jewish family. I thank you for visiting Offtonic. You can contact me at webmaster@offtonic.com.

כי ירבו שמחות בישראל וינוסו אנחות