Commit Graph

453 Commits

Author SHA1 Message Date
Bui
d85f8909d7 make songsel fast + add mousewheel scrolling 2022-02-16 13:13:52 +00:00
Bui
dfbdba50ef
bugge fix 2022-02-15 16:15:29 +00:00
Bui
23d269cf92
update ja strings 2022-02-15 12:53:11 +00:00
KatieFrogs
1db4eb6710 ImportSongs: Add plugin support
- Files with filenames that end with .taikoweb.js can be imported and run to add custom functionality to the game
- The plugin file is a javascript module script that should have a class in the default export
- Currently supported methods in the class: name (string), load, start, stop, unload (functions)
- The class can be extended from the Patch class to add automatic patching of variables and functions
- Here are some of the plugins I made: https://github.com/KatieFrogs/taiko-web-plugins
2022-02-11 17:28:22 +03:00
Bui
fd114d9f69
Merge pull request #374 from SiderealArt/patch-1
Add Traditional Chinese translation
2022-02-03 11:55:44 +00:00
SiderealArt
27da8c4a8e
calibration 2021-08-17 21:12:41 +08:00
SiderealArt
096402b625
Update strings.js 2021-07-11 14:45:39 +08:00
SiderealArt
405c340318
Update strings.js 2021-06-07 01:06:22 +08:00
SiderealArt
f99a826236
Update strings.js 2021-06-07 00:15:34 +08:00
SiderealArt
46c3c30a3d
Update strings.js 2021-06-07 00:01:35 +08:00
SiderealArt
9d779576d1
Update strings.js 2021-06-06 21:10:52 +08:00
SiderealArt
4aa8aff4d6
Update strings.js 2021-06-06 20:52:49 +08:00
SiderealArt
d1600023de
Update strings.js 2021-06-06 20:44:50 +08:00
SiderealArt
6ba9f94026
Add Traditional Chinese translation 2021-06-06 17:11:39 +08:00
LoveEevee
3d09fea3a5 Workaround an http-only crash in Chrome, fix cancel on title screen 2021-06-01 12:21:55 +03:00
LoveEevee
657c631769 Support restoring multiple folders imported by dragging 2021-05-30 07:13:36 +03:00
LoveEevee
9c44d223c4 Play se_don on title screen more fittingly 2021-05-28 04:55:53 +03:00
LoveEevee
b42b246a99 CustomSongs: Restore custom song list after reload
Uses the File System Access API supported in some browsers to keep the custom song list between sessions, restoring it back even when the page was closed.
2021-05-27 20:23:19 +03:00
Bui
1fceaadc7d
Merge pull request #303 from bui/gdrive-beta
ImportSongs: Implement Google Drive beta testing
2021-02-05 17:21:36 +00:00
jerrybeomsoo
6bece1de57
Update strings.js
Changed "오니" to "귀신" according to request.
2021-02-04 22:48:36 +09:00
jerrybeomsoo
35cfb71321
Update strings.js 2021-02-04 22:11:58 +09:00
LoveEevee
6918648ed6 Move privacy link, add categories.json to tools 2020-12-22 20:05:56 +03:00
LoveEevee
b8e63c650f ImportSongs: Implement Google Drive beta testing
Instances that wish to enable Google Drive support should first enable it to only a small subset of users (100 maximum) to allow the OAuth screen to be verified by Google without hitting the user limit. Minimum level in the config can be set to enable beta testing of this feature and then disabled by setting it to None.

- Add user level assignment screen to the administration panel
- Add privacy policy and links to it in various places
- Add switch accounts link near the Google Drive picker
2020-12-21 16:02:56 +03:00
LoveEevee
13d6aaab78 Bug fixes
- Fix chart in Ai want U
- Mute music on song select with Q
- Do not scroll song select background when the tab is not active
- Fix very short inputs not being recognized
- Fix sound being muted when playing the same song again
- Fix multiplayer when audio latency is set
- Fix getting stuck when imported song cannot be restarted
- Fix 2P cursor when ura is selected by both players
- Add KeyboardEvent.key to browser tests
- Separate buttons like Shift+Left into two on the How to Play page
- Change focused button on the custom songs screen to the first one available
- Add favicon to the admin page
- Display the id on the admin new song page
2020-12-04 13:52:35 +03:00
Bui
bd8e2191dd Add support for accented characters 2020-12-02 09:39:48 +00:00
Nyaasu
02348e45ea 📝 Add some Chinese translations 2020-11-30 06:44:50 +08:00
LoveEevee
2a167a0f50 Fix text becoming too big 2020-11-09 18:07:28 +03:00
LoveEevee
23214d14c3 BrowserSupport: Add Ogg/Wasm test 2020-11-09 17:34:44 +03:00
LoveEevee
4f66959e9c Use separate js and wasm files for oggmented
Source: https://github.com/LoveEevee/oggmented
2020-11-09 07:08:03 +03:00
LoveEevee
61c3bb1637 Fix calibration screen 2020-11-09 00:48:38 +03:00
LoveEevee
dec0e55eb7 Assets: Convert to ogg
- Uses oggmented library to add ogg support to iOS
- Adds support for ogg songs on the server, configurable per song on the admin page
- Lets iOS users upload custom songs with gdrive when enabled
- Tweaked colour picker on account page to respond faster
- Fixed not being able to restart osu songs
2020-11-09 00:30:56 +03:00
LoveEevee
1d025848c4 Fix local folder button 2020-11-04 03:16:45 +03:00
LoveEevee
5094b0bc70 Add folder dropping, fix rate limits
- Add folder drag and drop support
- Do expodential retrying if rate limited, allowing upload of very large drive folders
- Do not import deleted files
- Move the upload buttons to their own line
- Notify when no TJA files have been found
- Add more translations
2020-11-04 03:12:46 +03:00
LoveEevee
180ec58adb Changed look of song loading, fix custom game assets and song skins, fix auth error
- Change the way a selected song appears while it is loading the metadata
- Fix custom taikowebskin
- Fix importing custom game assets (local only)
- Get the oauth token again on auth error
2020-10-31 14:47:42 +03:00
LoveEevee
c5ce5104f1 Fix charts with utf8-bom encoding 2020-10-29 15:21:53 +03:00
LoveEevee
9aa7375287 Fix lyrics 2020-10-29 11:56:58 +03:00
LoveEevee
f590222568 Fix metadata loading, loading animation, osu charts, and gpicker
- Speed up metadata loading by not waiting for the audio
- Make loading animation bigger on mobile
- Fix osu charts imported with gdrive
- Fix gpicker not appearing after cancelling
2020-10-29 09:04:36 +03:00
LoveEevee
3fea149353 ImportSongs: Add Google Drive support
- Adds a new page for importing custom songs, where it is possible to pick a local folder (desktop only) or a Google Drive folder (desktop and Android)
  - This feature is disabled on iOS due to the lack of OGG audio support in the browser
- In order to not get rate limited, a TJA file is parsed for metadata only when the song is clicked in the song selection, rather than all at once at import time
- The instance maintainer will need to provide the API credentials in the config.py file to enable this feature
  - This requires a new project to be created at console.cloud.google.com
  - Drive API will have to be enabled
  - API and OAuth keys should be created
    - API key can be restricted to only have Google Drive and Google Picker APIs
    - OAuth Client ID should have Web Application type and JavaScript origins set
    - Editing the OAuth consent screen to have a name and icon is recommended
      - It is semi-required to submit the consent screen for verification as the permission to download all of the Drive files will be asked.
      - Note that the email of the maintainer is publicly visible on the consent screen
  - The project number can be found in the IAM & Admin settings page
2020-10-29 08:07:56 +03:00
Bui
f346e05312
Merge pull request #214 from MarNicGit/DynamicCategories
Dynamic categories
2020-05-09 17:24:23 +01:00
LoveEevee
db5e76880b Revert some whitespace changes 2020-04-27 20:07:43 +03:00
LoveEevee
6d0d5e1632 Fix categories for imported songs 2020-04-27 18:47:55 +03:00
mnvdk
962adb1dc7 song_Skin should be song_skin, info_Fill should be info_fill 2020-04-27 02:33:14 +02:00
mnvdk
8fe06bfb9d renamed infoFill to info_Fill on in the database 2020-04-27 02:22:18 +02:00
mnvdk
800e136f91 Undid storing categories in strings.js, instead using the localization method in songselect.js. category info gets passed down to view.js. 2020-04-27 02:12:09 +02:00
mnvdk
14629ad12a Don't lowercase the assigned value 2020-04-26 23:14:16 +02:00
mnvdk
387d1268fd importsongs no longer has a static category list 2020-04-26 22:56:31 +02:00
mnvdk
41ddbb66a9 load category strings in its own object instead of just overwriting everything 2020-04-26 18:13:59 +02:00
mnvdk
f66ef6417f Moved categories to its own object instead of allstrings and adjusted code in the other files in order to maintain multilangual support 2020-04-26 16:48:18 +02:00
mnvdk
dca4948548 reintroduced infoFill, moved infoFill to mongo 2020-04-17 18:35:39 +02:00
LoveEevee
f83fab41e3 Bug fixes
- Fixed touch multiplayer drum being too small and nameplate drawing on top of it
- Fixed #lyric lines being forced to be lowercase and appearing too early
- Fixed exiting session while someone else is using netplay sending you to difficulty selection of the song that the netplay person has selected
- Fixed ≠MM title on song select not having the first symbol rotated
- Fixed nameplate cache in song select and in game not getting cleared
- Increased ping timeout for multiplayer

Admin page fixes
- Add meta viewport tag so that the admin pages can be opened on mobile
- On song list, songs that are not enabled are now marked
- Disable tabbing through diverge notes checkboxes in courses when adding or editing a song
- Add Hash to song adding
- Display an error if a local chart file has not been found while calculating hash
- If calculating the hash results in an error, do not discard all other changes
2020-04-17 04:53:53 +03:00
mnvdk
d02bfa8426 tiny bit of cleanup 2020-04-16 21:55:55 +02:00
mnvdk
84d5edbbd0 removed backgrounds from assets.js 2020-04-16 21:50:17 +02:00
mnvdk
2c4fdab4f9 removed hardcoded categories from stringsjs and moved the language block to mongo 2020-04-16 21:39:23 +02:00
mnvdk
988c4cc734 Removed more hardcoded instances of categories 2020-04-16 00:40:13 +02:00
mnvdk
e1411bcd0d preload all category images in loader.js 2020-04-15 22:33:49 +02:00
mnvdk
85d6e70ff6 Dynamic songskin loading for categories 2020-04-14 23:01:47 +02:00
LoveEevee
69b5aa2903 More consistent don size in account settings 2020-04-04 18:01:35 +03:00
LoveEevee
7aa401090c Fixed custom don not working in session mode 2020-04-04 17:08:59 +03:00
LoveEevee
cd288d4fa4 Add custom Don
- Registered users can customise the colour of their Don and it will appear for other players
- Bug fixes:
  - Add lyrics checkbox to admin page
  - 2P shows above "creative" or "with lyrics" labels
  - Prevent accidental alt and menu keyboard presses from triggering browser menus
  - Fixed mouse hitboxes on difficulty selection
  - Clean cached sounds and lyrics when another song is loading
  - Fixed debug jumping to the top-left of the screen when hidden
  - Fixed server volume not being applied to songs
2020-04-04 16:48:58 +03:00
LoveEevee
de284d204d Add Show Lyrics option to settings 2020-03-31 16:44:54 +03:00
LoveEevee
51bd6cec63 Support importing lyrics
- Use inline "#LYRIC" lines in tja files
- "LYRICS:" in tja metadata can point to a vtt file, this overrides "#LYRIC"
2020-03-31 15:50:27 +03:00
LoveEevee
b4dcd76f90 SongSelect: Mark songs with lyrics 2020-03-30 17:29:53 +03:00
LoveEevee
18b6e7dfc2 Fix debug 2020-03-30 11:59:42 +03:00
LoveEevee
3679c27986 Add lyrics 2020-03-30 09:50:34 +03:00
LoveEevee
20b964ab2e Fix some osu songs not being imported 2020-03-26 00:56:49 +03:00
LoveEevee
54a98b77d9 Fix logging out and the Remember me checkbox 2020-03-17 11:07:29 +03:00
LoveEevee
2232c36182 Request a csrftoken before every request 2020-03-17 07:20:03 +03:00
Bui
816833bac0 handle csrf error 2020-03-17 02:18:18 +00:00
Bui
1e7477dd96 anti-csrf 2020-03-17 02:10:47 +00:00
Bui
fe90a35625 generate hashes on server 2020-03-17 01:27:06 +00:00
Bui
5a68978ec4 implement song addition/deletion 2020-03-16 23:30:44 +00:00
LoveEevee
c63b5eba4b Fix positioning of the Select Difficulty text 2020-03-17 01:31:15 +03:00
LoveEevee
f4c3a664eb SongSelect: Lower the songs to make room for crowns 2020-03-17 00:42:20 +03:00
LoveEevee
29fb7845ed Add session crowns 2020-03-16 22:49:18 +03:00
LoveEevee
47b769c8b3 Fix warning not showing in session mode 2020-03-16 19:07:55 +03:00
LoveEevee
95eef4e8db Fix bgm_songsel playing on error 2020-03-16 19:00:32 +03:00
LoveEevee
8f736b5b23 Fix weird sound on error and long lines not wrapping 2020-03-16 18:34:18 +03:00
LoveEevee
4b37150ee0 Improve the song loading screen error message 2020-03-16 16:42:36 +03:00
LoveEevee
a25e108a4b SongSelect: Session sound effects play in appropriate sound channels 2020-03-16 15:22:16 +03:00
LoveEevee
33b9b206a7 Improve the loading screen error message
- Fix subtitle if the previously selected song had the same title
2020-03-16 12:54:21 +03:00
Bui
61e521dda3 update song edit page 2020-03-15 16:16:18 +00:00
LoveEevee
38f1384f27 ParseSong: Separate events from notes 2020-03-15 18:00:23 +03:00
LoveEevee
0a578578c5 Fix strings not having id 2020-03-15 14:10:02 +03:00
LoveEevee
4c07813aff Improve strings.js layout 2020-03-15 10:12:16 +03:00
LoveEevee
0144367c6e Fix importing custom songs 2020-03-14 12:44:29 +03:00
LoveEevee
7f1bb9d357 Multiplayer improvements and reupload score on error
- In multiplayer you will play at the bottom if you joined second
- Add a dialog to song select that score has not been saved
- Uploads the score when logged in again
- Translate error messages from the server
2020-03-14 07:50:04 +03:00
LoveEevee
ad62ac800c Some bug fixes 2020-03-13 08:32:53 +03:00
Bui
929471698f fix individual score upload 2020-03-13 04:04:45 +00:00
Bui
73b8da36ab fix registration bug 2020-03-13 03:54:27 +00:00
Bui
62aca02aab bugfixes 2020-03-13 03:19:26 +00:00
Bui
ae71ab8073 Merge remote-tracking branch 'origin/add-accounts' into user-server 2020-03-13 02:46:52 +00:00
Bui
7519b1c4c2 account system backend, db rewrite 2020-03-13 02:45:42 +00:00
LoveEevee
2af924a985 Add everything for accounts 2020-03-13 05:34:54 +03:00
LoveEevee
e81bf9b480 More bug fixes
- BPM and go go time change even when there are no notes after the change, seen in Ego Ego Atakushi and UFO Swingin'
- Maker URL can be added to a local tja
  - Example: `MAKER: Creator name <https://example.com/path>`
- Long list of settings scrolls more naturally with arrow keys
- When media engagement is low, gamepad users will not be able to proceed on the title screen until a mouse click or a key press unpauses the audio context
- Fix "Bad" note gauge judgement on easy difficulty
- In debug, use hash to tell apart songs
2020-03-12 07:59:28 +03:00
LoveEevee
4d370762f8 Use Font Loading API instead of FontDetect 2020-03-09 16:05:13 +03:00
LoveEevee
9248a52194 Lots of bug fixes
- Toggling autoplay checkbox in debug now disallows saving the score
- Fix crown of the song that was previously selected rendering above the genre
- Outline of empty crowns is slightly darker
- Fix rendering when there is a crown on oni and no crown on ura
- Fix crowns overlapping the netplay 2P icon
- Fix gauge in latency calibration
- Fix debug to work on mobile, can be toggled with ctrl+alt+`;` on hacker's keyboard with permanent notification
- Fix being unable to scroll the settings list without toggling something
- Handle KeyboardInterrupt in server.py
- Fix category jumping not working in session mode
- Fix mouse cursor being hidden at results screen in session mode
- Make "Issues" on the about screen and "An error occurred, please refresh" on loading screens translateable
- CanvasCache uses integer increments for comparison instead of Date.now()
- For imported songs, exclude song titles from genre comparisons if they appear in the name of the folder
- Fix tja files with spaces in the notation
- Fix second player's score on the results screen to have upside down appearance
- Add fixed chinese strings
2020-03-09 15:36:57 +03:00
Bui
5a1be53e21
Merge pull request #186 from bui/songselect-add-crowns
SongSelect: Add crowns
2020-03-07 13:54:14 +00:00
LoveEevee
40577beadc ScoreStorage: Fix full combos with a worse score not saving 2020-03-07 10:34:01 +03:00
LoveEevee
ac0483b389 SongStorage: Fix imported osu songs not getting titles 2020-03-07 10:13:50 +03:00
LoveEevee
1759772831 ScoreStorage: Use hashes instead of song titles 2020-03-07 04:48:30 +03:00
LoveEevee
0221c977c8 SongSelect: Add crowns
- Improve the soul gauge to fill properly. The algorithm is different for each difficulty.
- Saves score to localStorage, the whole score is correct now.
- Adds crowns to song selection screen.

The scores would take a lot of space if stored as readable objects so they are stored compressed. If you need to edit your scores, you can do so by opening dev console and entering `scoreStorage.get()`. Expand to the song and double click on values that you need to edit. When you are done editing, do not forget to save your scores with `scoreStorage.save()`. Adding new scores can be done with `scoreStorage.add`, first get a template with `obj=scoreStorage.template(),obj` and after editing, add it with `scoreStorage.add("song name", "oni", obj)`. To remove a score use `scoreStorage.remove("song name"[, "oni"])`.
2020-03-06 20:57:01 +03:00
LoveEevee
21259abdda Scoresheet: Save results to localstorage 2020-03-06 19:02:40 +03:00
LoveEevee
41afc2a905 Game: Improve gauge 2020-03-05 18:58:49 +03:00
LoveEevee
9a9bc2869c
[PATCH] Fix big notes being hit for a short time 2020-03-01 00:51:37 +08:00
LoveEevee
3097dd3736
[PATCH] Add Easier Big Notes setting 2020-03-01 00:05:05 +08:00
purerosefallen
2ab0de9644
improve Dais for Taiko Force Lv5 2020-02-27 23:11:04 +08:00
LoveEevee
c76931e7db Add category jump buttons to song select 2020-02-22 20:27:57 +03:00
Bui
28b837fbf1
Merge branch 'master' into cat-jump 2020-02-22 13:50:46 +00:00
Bui
ce4d8ce31f
Merge pull request #181 from bui/audio-update
Audio update
2020-02-22 13:14:05 +00:00
Bui
b030624ab1 fix combo voice load error 2020-02-22 13:13:04 +00:00
Bui
750dc66245 improve category jump 2020-02-22 13:09:07 +00:00
Bui
c900f13340
Merge pull request #171 from purerosefallen/note_word
update the words below the notes
2020-02-22 08:46:42 +00:00
Bui
9f7ce52cb4 only load combo voices as needed 2019-12-24 19:37:10 +00:00
Bui
91e5127613 audio update 2019-12-24 18:10:40 +00:00
LoveEevee
ff09cb83bd Add global offset
Adds new settings for controlling the note offset while playing. It can be either an actual offset (it is called "Audio Latency" in the settings) or just the visual offset ("Video Latency").
With higher audio latency it means you have to press the button sooner than what you hear, similarly with higher video latency it is sooner than what you see. By offsetting these events the game would play better, however, the sound effect of you hitting the drum would still play at the wrong time, the code cannot anticipate you to hit the drum in the future so to work around this issue a new option that disables drum sounds is also included.
These settings could be set through trial and error but it would be better to get the correct values through the automated latency calibration, where you can hit the drum as you hear sounds or see a blinking animation. I tried making one by measuring latency from user input, adding all the latency up, and dividing, but that gives unreliable results. I hope someone suggests to me what I should be doing during the calibration to get better results, as I cannot figure what to do on my own.
2019-11-28 09:04:40 +03:00
Bui
34d0bd01d4 SongSelect: category jumping 2019-11-27 01:45:28 +00:00
Bui
7a50dec558 fix maker detection for local tja 2019-11-26 13:40:42 +00:00
Bui
ea04771d00 always save selected song 2019-11-25 16:38:14 +00:00
Bui
30bc2b1002 handle invalid maker ids 2019-11-25 01:44:40 +00:00
Bui
8cc1b940e1 read maker from local tja 2019-11-25 01:04:59 +00:00
Bui
42f22a4f09 allow anonymous makers 2019-11-25 00:58:07 +00:00
Bui
67e418bc4d SongSelect: Add maker identification
requires maker_id(int) column in songs table, and a new "makers" table with maker_id(int), name(text), url(text)
2019-11-24 23:51:58 +00:00
purerosefallen
4c80505de5
fix 2019-11-05 10:01:29 +08:00
LoveEevee
1bb3359784 Use stars on song select for score level 2019-11-04 17:20:44 +03:00
purerosefallen
02c377e9cf
update the words below the notes 2019-11-04 20:59:28 +08:00
purerosefallen
84377f62b0
only for safety 2019-11-03 10:40:43 +08:00
purerosefallen
cd7015f582
fix 2019-11-02 09:53:15 +08:00
purerosefallen
88fc5dbbb6
improve 2019-11-02 00:45:53 +08:00
purerosefallen
f3f57ea1a5
fix 2019-11-01 00:47:43 +08:00
purerosefallen
8574ad2580
add auto score 2019-11-01 00:12:20 +08:00
Bui
41a64965a7 remove hardcoded email address 2019-09-15 17:15:41 +01:00
purerosefallen
be0b0c61cf
new score 2019-06-21 11:54:26 +08:00
Bui
6c2067526a
fix syntax error 2019-05-03 04:15:30 +01:00
Bui
5a36e63f36
Display all settings on first load 2019-05-03 03:59:31 +01:00
LoveEevee
7b67be87d3 Fix views on small resolutions 2019-04-17 00:33:50 +03:00
LoveEevee
454028a7e6 Fix tutorial not saving 2019-04-16 23:29:26 +03:00
LoveEevee
f5d4c6bce5 Improve gamepad layout window 2019-04-16 22:48:21 +03:00
LoveEevee
f05b2518f3 Split language and tutorial, add gamepad settings 2019-04-16 21:06:41 +03:00
LoveEevee
a4d938e888 Move language settings from title screen 2019-04-06 22:14:44 +03:00
LoveEevee
a33ff2a868 Fix keys not resetting 2019-04-06 13:26:06 +03:00
LoveEevee
b3c0f8cd73 Add language to settings 2019-04-06 13:19:10 +03:00
LoveEevee
8565a3cbba Remove gamepad layout settings 2019-04-06 00:10:15 +03:00
LoveEevee
59fc718a08 Fix touching settings 2019-04-05 23:21:22 +03:00
LoveEevee
879186c313 Add keyboard and gamepad settings 2019-04-05 22:53:51 +03:00
LoveEevee
3f533a0255 Add background music 2019-04-05 12:36:14 +03:00
LoveEevee
78528b424c Fix results screen, clear drum asset 2019-04-05 00:21:08 +03:00
LoveEevee
cb64777012 SongSelect: Add Settings
- Resolution can be adjusted, as well as touch drum animation on mobile
- A translation text file "songtitle.txt" can be imported
  - Titles and translated titles are each on their own line, if a line begins with a language code, it will translate the song title that is above
  - An example file can be found here: https://gist.github.com/LoveEevee/65fe66f0b54c0536f96fd2f4862984d4
- The page will fail to load if version on the page does not match /api/config
- Disabled Tab key while playing, before hitting it would focus the version link
- Fix forcing branches in debug not working
- Fixed not being able to click on songs that do not have oni but have ura
- Fix unexpected category being used as a fallback
- Fix verticalText and layeredText not accepting anything except strings
2019-04-04 23:40:11 +03:00
LoveEevee
267461dd84 Clean more caches 2019-03-22 13:47:10 +03:00
LoveEevee
911da048bb Fix code
- Fixes code
2019-03-20 17:00:30 +03:00
LoveEevee
61a5d6d496 SoundBuffer: Set song volume
- Requires a new column in the database after preview: `volume` REAL
- The value is a volume multiplier, if the value is set to null or 1 there will be no change
- The volume can be set in debugger
- Imported TJA files are now read from disk every time the song is played, freeing some memory and making it easier to create charts
- Correctly parse TJA files with alphabet notes, added "A" and "B" notes, which appear as DON (Big) and KA (Big) respectively
2019-03-16 00:34:48 +03:00