Translation components API.

See the Weblate's Web API documentation for detailed description of the API.

GET /api/translations/sonic-pi/tutorial/id/changes/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 113,
    "next": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/changes/?format=api&page=2",
    "previous": null,
    "results": [
        {
            "unit": null,
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/samaaron/?format=api",
            "author": null,
            "timestamp": "2024-04-29T19:06:10.724938+02:00",
            "action": 17,
            "target": "",
            "old": "",
            "details": {},
            "id": 88474380,
            "action_name": "Changes committed",
            "url": "https://hosted.weblate.org/api/changes/88474380/?format=api"
        },
        {
            "unit": null,
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/samaaron/?format=api",
            "author": null,
            "timestamp": "2024-04-29T19:06:10.427343+02:00",
            "action": 17,
            "target": "",
            "old": "",
            "details": {},
            "id": 88474379,
            "action_name": "Changes committed",
            "url": "https://hosted.weblate.org/api/changes/88474379/?format=api"
        },
        {
            "unit": null,
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/samaaron/?format=api",
            "author": null,
            "timestamp": "2024-04-29T19:06:10.193305+02:00",
            "action": 17,
            "target": "",
            "old": "",
            "details": {},
            "id": 88474378,
            "action_name": "Changes committed",
            "url": "https://hosted.weblate.org/api/changes/88474378/?format=api"
        },
        {
            "unit": null,
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/samaaron/?format=api",
            "author": null,
            "timestamp": "2024-04-29T19:06:09.982309+02:00",
            "action": 17,
            "target": "",
            "old": "",
            "details": {},
            "id": 88474377,
            "action_name": "Changes committed",
            "url": "https://hosted.weblate.org/api/changes/88474377/?format=api"
        },
        {
            "unit": null,
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/samaaron/?format=api",
            "author": null,
            "timestamp": "2024-04-29T19:06:09.748071+02:00",
            "action": 17,
            "target": "",
            "old": "",
            "details": {},
            "id": 88474376,
            "action_name": "Changes committed",
            "url": "https://hosted.weblate.org/api/changes/88474376/?format=api"
        },
        {
            "unit": null,
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/samaaron/?format=api",
            "author": null,
            "timestamp": "2024-04-29T19:06:09.547089+02:00",
            "action": 17,
            "target": "",
            "old": "",
            "details": {},
            "id": 88474375,
            "action_name": "Changes committed",
            "url": "https://hosted.weblate.org/api/changes/88474375/?format=api"
        },
        {
            "unit": null,
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2024-02-07T02:01:57.840340+01:00",
            "action": 17,
            "target": "",
            "old": "",
            "details": {},
            "id": 80067346,
            "action_name": "Changes committed",
            "url": "https://hosted.weblate.org/api/changes/80067346/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7041811/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "author": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "timestamp": "2024-02-06T01:20:17.306019+01:00",
            "action": 5,
            "target": "live_loop :flibble do\n  sample :bd_haus, rate: 1\n  sleep 0.5\nend",
            "old": "",
            "details": {
                "state": 20,
                "source": "live_loop :flibble do\n  sample :bd_haus, rate: 1\n  sleep 0.5\nend",
                "old_state": 0
            },
            "id": 80023906,
            "action_name": "Translation added",
            "url": "https://hosted.weblate.org/api/changes/80023906/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/15387731/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "author": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "timestamp": "2024-02-06T01:20:11.698006+01:00",
            "action": 5,
            "target": "Mari kita mulai, salin kode berikut ini ke dalam buffer kosong:",
            "old": "",
            "details": {
                "state": 20,
                "source": "Let's get started, copy the following code into an empty buffer:",
                "old_state": 0
            },
            "id": 80023903,
            "action_name": "Translation added",
            "url": "https://hosted.weblate.org/api/changes/80023903/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7041809/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "author": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "timestamp": "2024-02-06T01:20:05.136131+01:00",
            "action": 5,
            "target": "Sebuah live loop",
            "old": "",
            "details": {
                "state": 20,
                "source": "A live loop",
                "old_state": 0
            },
            "id": 80023901,
            "action_name": "Translation added",
            "url": "https://hosted.weblate.org/api/changes/80023901/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7041808/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "author": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "timestamp": "2024-02-06T01:19:52.580101+01:00",
            "action": 5,
            "target": "Sebelum kita masuk ke detail tentang cara kerja Sonic Pi dalam sisa tutorial ini, saya ingin memberi Anda pengalaman tentang bagaimana rasanya membuat kode langsung. Jangan khawatir jika Anda tidak mengerti banyak (atau semua) hal ini. Cobalah untuk tetap duduk di kursi Anda dan nikmati...",
            "old": "",
            "details": {
                "state": 20,
                "source": "Before we get into the real details of how Sonic Pi works in the rest of this tutorial, I'd like to give you an experience of what it's like to live code. Don't worry if you don't understand much (or any) of this. Just try to hold onto your seats and enjoy...",
                "old_state": 0
            },
            "id": 80023898,
            "action_name": "Translation added",
            "url": "https://hosted.weblate.org/api/changes/80023898/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7041807/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "author": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "timestamp": "2024-02-06T01:19:40.228105+01:00",
            "action": 5,
            "target": "Bebaskan pikiranmu",
            "old": "",
            "details": {
                "state": 20,
                "source": "Free your mind",
                "old_state": 0
            },
            "id": 80023889,
            "action_name": "Translation added",
            "url": "https://hosted.weblate.org/api/changes/80023889/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7041806/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "author": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "timestamp": "2024-02-06T01:19:12.376710+01:00",
            "action": 5,
            "target": "Salah satu aspek yang paling menarik dari Sonic Pi adalah memungkinkan Anda untuk menulis dan *memodifikasi kode secara langsung* untuk membuat musik, seperti halnya Anda bermain gitar secara langsung. Artinya, dengan sedikit latihan, Anda bisa membawa Sonic Pi ke atas panggung dan manggung dengannya.",
            "old": "",
            "details": {
                "state": 20,
                "source": "One of the most exciting aspects of Sonic Pi is that it enables you to write and *modify code live* to make music, just like you might perform live with a guitar. This means that given some practice you can take Sonic Pi on stage and gig with it.",
                "old_state": 0
            },
            "id": 80023884,
            "action_name": "Translation added",
            "url": "https://hosted.weblate.org/api/changes/80023884/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/15387730/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "author": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "timestamp": "2024-02-06T01:19:05.307769+01:00",
            "action": 5,
            "target": "Terakhir, melihat orang lain membuat kode secara langsung adalah cara yang sangat bagus untuk belajar. Saya secara teratur melakukan streaming langsung di [https://youtube.com/samaaron] (http://youtube.com/samaaron) jadi silakan mampir, menyapa dan mengajukan banyak pertanyaan kepada saya :-)",
            "old": "",
            "details": {
                "state": 20,
                "source": "Finally, watching others live code is a really great way to learn. I regularly stream live on [https://youtube.com/samaaron](http://youtube.com/samaaron) so please do drop by, say hi and ask me lots of questions :-)",
                "old_state": 0
            },
            "id": 80023882,
            "action_name": "Translation added",
            "url": "https://hosted.weblate.org/api/changes/80023882/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7041801/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "author": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "timestamp": "2024-02-06T01:18:50.414385+01:00",
            "action": 5,
            "target": "Tutorial ini dibagi ke dalam beberapa bagian yang dikelompokkan berdasarkan kategori. Meskipun saya telah menulisnya agar mudah dipelajari dari awal hingga akhir, Anda dapat dengan bebas masuk dan keluar dari bagian yang Anda inginkan. Jika Anda merasa ada sesuatu yang kurang, beritahu saya dan saya akan mempertimbangkannya untuk versi yang akan datang.",
            "old": "",
            "details": {
                "state": 20,
                "source": "This tutorial is divided up into sections grouped by category. Whilst I've written it to have an easy learning progression from start to finish, feel very free just to dip in and out of sections as you see fit. If you feel that there's something missing, do let me know and I'll consider it for a future version.",
                "old_state": 0
            },
            "id": 80023880,
            "action_name": "Translation added",
            "url": "https://hosted.weblate.org/api/changes/80023880/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/15387729/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "author": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "timestamp": "2024-02-06T01:18:43.382898+01:00",
            "action": 5,
            "target": "Tapi tunggu, betapa tidak sopannya saya! Izinkan saya memperkenalkan diri - saya adalah [Sam Aaron] (https://twitter.com/samaaron) - orang yang menciptakan Sonic Pi. Anda bisa menemukan saya di [@samaaron](http://twitter.com/samaaron) di Twitter dan saya akan dengan senang hati menyapa Anda. Anda juga mungkin tertarik untuk mengetahui lebih lanjut tentang [Live Coding Performances] (https://youtube.com/samaaron) di mana saya melakukan coding dengan Sonic Pi secara langsung di depan penonton.",
            "old": "",
            "details": {
                "state": 20,
                "source": "But wait, how rude of me! Let me introduce myself - I'm [Sam Aaron](https://twitter.com/samaaron) - the chap that created Sonic Pi. You can find me at [@samaaron](http://twitter.com/samaaron) on Twitter and I'd be more than happy to say hello to you. You might also be interested in finding out more about my [Live Coding Performances](https://youtube.com/samaaron) where I code with Sonic Pi live in front of audiences.",
                "old_state": 0
            },
            "id": 80023879,
            "action_name": "Translation added",
            "url": "https://hosted.weblate.org/api/changes/80023879/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991696/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "author": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "timestamp": "2024-02-06T01:18:34.228763+01:00",
            "action": 2,
            "target": "Selamat datang di Sonic Pi. Semoga Anda bersemangat untuk mulai membuat suara Anda sendiri seperti yang akan saya tunjukkan kepada Anda. Ini akan menjadi perjalanan yang sangat *menyenangkan* di mana Anda akan mempelajari semua tentang musik, sintesis, pemrograman, komposisi, pertunjukan, dan banyak lagi.",
            "old": "Selamat datang di Sonic Pi. Semoga kamu bersemangat untuk mulai membuat suara-suara seru yang akan kutunjukkan. Ini akan menjadi perjalanan yang sangat *seru* dimana kamu akan belajar tentang musik, perpaduan, pemrograman, komposisi, performa, dan masih banyak lagi.",
            "details": {
                "state": 20,
                "source": "Welcome to Sonic Pi. Hopefully you're as excited to get started making your own sounds as I am to show you. It's going to be a really *fun* ride where you'll learn all about music, synthesis, programming, composition, performance and more.",
                "old_state": 10
            },
            "id": 80023875,
            "action_name": "Translation changed",
            "url": "https://hosted.weblate.org/api/changes/80023875/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991696/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "author": "https://hosted.weblate.org/api/users/rezaalmanda/?format=api",
            "timestamp": "2024-02-06T01:18:34.223898+01:00",
            "action": 45,
            "target": "",
            "old": "",
            "details": {},
            "id": 80023874,
            "action_name": "Contributor joined",
            "url": "https://hosted.weblate.org/api/changes/80023874/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7043779/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/nekoneko/?format=api",
            "author": "https://hosted.weblate.org/api/users/nekoneko/?format=api",
            "timestamp": "2022-09-04T16:01:21.440118+02:00",
            "action": 9,
            "target": "Sumber lain yang bagus untuk menjelajahi dunia pengodean langsung adalah [Algorave](http://algorave.com). Di sini kamu bisa menemukan berbagai ragam cara pengodean langsung untuk membuat musik di bar.",
            "old": "",
            "details": {
                "state": 20,
                "source": "Another great resource for exploring the live coding world is [Algorave](http://algorave.com). Here you can find all about a specific strand of live coding for making music in nightclubs.",
                "old_state": 0
            },
            "id": 33891546,
            "action_name": "Translation uploaded",
            "url": "https://hosted.weblate.org/api/changes/33891546/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7043778/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/nekoneko/?format=api",
            "author": "https://hosted.weblate.org/api/users/nekoneko/?format=api",
            "timestamp": "2022-09-04T16:01:21.388580+02:00",
            "action": 9,
            "target": "Algorave",
            "old": "",
            "details": {
                "state": 20,
                "source": "Algorave",
                "old_state": 0
            },
            "id": 33891545,
            "action_name": "Translation uploaded",
            "url": "https://hosted.weblate.org/api/changes/33891545/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7043777/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/nekoneko/?format=api",
            "author": "https://hosted.weblate.org/api/users/nekoneko/?format=api",
            "timestamp": "2022-09-04T16:01:21.297351+02:00",
            "action": 9,
            "target": "Pengodean langsung bukanlah hal yang baru - beberapa orang sudah melakukannya selama bertahun-tahun, biasanya menggunakan alat rakitan khusus. Salah satu tempat untuk mencari lebih banyak tengan pengode langsung dan alat tersebut adalah [TOPLAP](http://toplap.org).",
            "old": "",
            "details": {
                "state": 20,
                "source": "Live coding isn't completely new - a small number of people have been doing it for a few years now, typically using bespoke systems they've built for themselves. A great place to go and find out more about other live coders and systems is [TOPLAP](http://toplap.org).",
                "old_state": 0
            },
            "id": 33891544,
            "action_name": "Translation uploaded",
            "url": "https://hosted.weblate.org/api/changes/33891544/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7043776/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/nekoneko/?format=api",
            "author": "https://hosted.weblate.org/api/users/nekoneko/?format=api",
            "timestamp": "2022-09-04T16:01:21.254759+02:00",
            "action": 9,
            "target": "TOPLAP",
            "old": "",
            "details": {
                "state": 20,
                "source": "TOPLAP",
                "old_state": 0
            },
            "id": 33891543,
            "action_name": "Translation uploaded",
            "url": "https://hosted.weblate.org/api/changes/33891543/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7041805/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/nekoneko/?format=api",
            "author": "https://hosted.weblate.org/api/users/nekoneko/?format=api",
            "timestamp": "2022-09-04T16:01:21.184854+02:00",
            "action": 9,
            "target": "Pengodean Langsung",
            "old": "",
            "details": {
                "state": 20,
                "source": "Live Coding",
                "old_state": 0
            },
            "id": 33891542,
            "action_name": "Translation uploaded",
            "url": "https://hosted.weblate.org/api/changes/33891542/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7041804/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/nekoneko/?format=api",
            "author": "https://hosted.weblate.org/api/users/nekoneko/?format=api",
            "timestamp": "2022-09-04T16:01:21.131344+02:00",
            "action": 9,
            "target": "1.1 Pengodean Langsung",
            "old": "",
            "details": {
                "state": 20,
                "source": "1.1 Live Coding",
                "old_state": 0
            },
            "id": 33891541,
            "action_name": "Translation uploaded",
            "url": "https://hosted.weblate.org/api/changes/33891541/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7041804/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/nekoneko/?format=api",
            "author": "https://hosted.weblate.org/api/users/nekoneko/?format=api",
            "timestamp": "2022-09-04T16:01:21.119211+02:00",
            "action": 45,
            "target": "",
            "old": "",
            "details": {},
            "id": 33891540,
            "action_name": "Contributor joined",
            "url": "https://hosted.weblate.org/api/changes/33891540/?format=api"
        },
        {
            "unit": null,
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/samaaron/?format=api",
            "author": "https://hosted.weblate.org/api/users/samaaron/?format=api",
            "timestamp": "2022-08-30T13:46:26.904858+02:00",
            "action": 0,
            "target": "",
            "old": "",
            "details": {
                "reason": "content changed",
                "filename": "etc/doc/lang/sonic-pi-tutorial-id.po"
            },
            "id": 32812971,
            "action_name": "Resource updated",
            "url": "https://hosted.weblate.org/api/changes/32812971/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/81955823/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-08-30T13:46:26.904734+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "99 Conclusions",
                "old_state": -1
            },
            "id": 32812970,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/32812970/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/81955822/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-08-30T13:46:26.904540+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "Remember to prepend a colon `:` to the name of your function when you define it. Function names should also start with a lower case letter, so use `:foo` rather than `:Foo`.",
                "old_state": -1
            },
            "id": 32812969,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/32812969/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991696/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/uraihan/?format=api",
            "author": "https://hosted.weblate.org/api/users/uraihan/?format=api",
            "timestamp": "2022-08-02T13:23:31.528324+02:00",
            "action": 4,
            "target": "Selamat datang di Sonic Pi. Semoga kamu bersemangat untuk memulai membuat suara-suara seru yang akan kutunjukkan. Ini akan menjadi perjalanan yang sangat *seru* dimana kamu akan belajar tentang musik, perpaduan, pemrograman, komposisi, performa, dan masih banyak lagi.",
            "old": "Selamat datang di Sonic Pi. Semoga kamu bersemangat untuk mulai membuat suara-suara seru yang akan kutunjukkan. Ini akan menjadi perjalanan yang sangat *seru* dimana kamu akan belajar tentang musik, perpaduan, pemrograman, komposisi, performa, dan masih banyak lagi.",
            "details": {
                "state": 10,
                "source": "Welcome to Sonic Pi. Hopefully you're as excited to get started making your own sounds as I am to show you. It's going to be a really *fun* ride where you'll learn all about music, synthesis, programming, composition, performance and more.",
                "old_state": 10
            },
            "id": 30858044,
            "action_name": "Suggestion added",
            "url": "https://hosted.weblate.org/api/changes/30858044/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7041803/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/uraihan/?format=api",
            "author": "https://hosted.weblate.org/api/users/uraihan/?format=api",
            "timestamp": "2022-08-02T13:21:37.934138+02:00",
            "action": 5,
            "target": "OK, mari kita mulai...",
            "old": "",
            "details": {
                "state": 20,
                "source": "OK, let's get started...",
                "old_state": 0
            },
            "id": 30858037,
            "action_name": "Translation added",
            "url": "https://hosted.weblate.org/api/changes/30858037/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7041800/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/uraihan/?format=api",
            "author": "https://hosted.weblate.org/api/users/uraihan/?format=api",
            "timestamp": "2022-08-02T13:21:10.929861+02:00",
            "action": 5,
            "target": "Apabila kamu punya gagasan atau ide untuk memperbaiki Sonic Pi - tolong beri tahu kami - masukan akan sangat membantu. Kamu tidak pernah tahu, idemu mungkin akan menjadi fitur besar selanjutnya!",
            "old": "",
            "details": {
                "state": 20,
                "source": "If you have any thoughts, or ideas for improving Sonic Pi - please pass them on - feedback is so helpful. You never know, your idea might be the next big feature!",
                "old_state": 0
            },
            "id": 30858033,
            "action_name": "Translation added",
            "url": "https://hosted.weblate.org/api/changes/30858033/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7041797/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/uraihan/?format=api",
            "author": "https://hosted.weblate.org/api/users/uraihan/?format=api",
            "timestamp": "2022-08-02T13:15:57.484822+02:00",
            "action": 2,
            "target": "Selamat datang, kawan :-)",
            "old": "Selamat datang teman :-)",
            "details": {
                "state": 20,
                "source": "Welcome friend :-)",
                "old_state": 20
            },
            "id": 30858020,
            "action_name": "Translation changed",
            "url": "https://hosted.weblate.org/api/changes/30858020/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/7041797/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/uraihan/?format=api",
            "author": "https://hosted.weblate.org/api/users/uraihan/?format=api",
            "timestamp": "2022-08-02T13:15:57.472304+02:00",
            "action": 45,
            "target": "",
            "old": "",
            "details": {},
            "id": 30858019,
            "action_name": "Contributor joined",
            "url": "https://hosted.weblate.org/api/changes/30858019/?format=api"
        },
        {
            "unit": null,
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": "https://hosted.weblate.org/api/users/samaaron/?format=api",
            "author": "https://hosted.weblate.org/api/users/samaaron/?format=api",
            "timestamp": "2022-05-30T15:44:09.820934+02:00",
            "action": 0,
            "target": "",
            "old": "",
            "details": {
                "reason": "content changed",
                "filename": "etc/doc/lang/sonic-pi-tutorial-id.po"
            },
            "id": 25895604,
            "action_name": "Resource updated",
            "url": "https://hosted.weblate.org/api/changes/25895604/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991724/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.820793+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "This is just a very basic taster of what's possible when you use filters to modify and change a source sound. Try playing with Sonic Pi's many built-in FX to see what fun sounds you can design. If your sound feels too static, remember you can start modulating the options to create some movement.",
                "old_state": -1
            },
            "id": 25895603,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895603/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991723/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.820617+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "Let's combine all these techniques to see if we can use additive synthesis to re-create a basic bell sound. I've broken this example into four sections. Firstly we have the 'hit' section which is the initial onset part of the bell sound - so uses a short envelope (e.g. a `release:` of around `0.1`). Next we have the long ringing section in which I'm using the pure sound of the sine wave. Notice that I'm often increasing the note by roughly `12` and `24` which are the number of notes in one and two octaves. I have also thrown in a couple of low sine waves to give the sound some bass and depth. Finally, I used `define` to wrap my code in a function which I can then use to play a melody. Try playing your own melody and also messing around with the contents of the `:bell` function until you create your own fun sound to play with!",
                "old_state": -1
            },
            "id": 25895602,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895602/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991722/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.820490+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "Let's take a look at a simple piece which combines these ideas. Copy it into an empty Sonic Pi buffer, hit play, listen to it for a while and then use it as a starting point for your own piece. See how much fun it is to manipulate the playback rate of samples. As an added exercise try recording your own sounds and play around with the rate to see what wild sounds you can make.",
                "old_state": -1
            },
            "id": 25895601,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895601/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991721/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.820362+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "This allows us to take any sample and create new rhythmical possibilities which is a lot of fun. However, one thing to be careful about is to make sure that the tempo of the sample matches the current BPM in Sonic Pi otherwise the slicing will sound totally off. For example, try swapping `:loop_mika` with the `loop_amen` sample to hear how bad this can sound when the tempos don't align.",
                "old_state": -1
            },
            "id": 25895600,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895600/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991720/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.820224+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "Way back in episode 3 of this Sonic Pi series we looked at how to loop, stretch and filter one of the most famous drum breaks of all time - the Amen Break. In this tutorial we're going to take this one step further and learn how to slice it up, shuffle the slices and glue it back together in a completely new order. If that sounds a bit wild to you, don't worry, it will all become clear and you'll soon master a powerful new tool for your live coded sets.",
                "old_state": -1
            },
            "id": 25895599,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895599/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991719/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.820035+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "**Deprecation Warning** *Apologies but this article was written back when Minecraft Pi Edition was still part of Raspberry Pi OS and Sonic Pi had built-in support to control it with code. Unfortunately this is no longer the case and the minecraft specific code (`mc_*` functions) are no longer available in Sonic Pi. However, this article is left here as a memory of what was once possible.*",
                "old_state": -1
            },
            "id": 25895598,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895598/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991718/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.819873+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "Finally, here's a piece I composed using the ideas in this tutorial. Copy it into an empty buffer, listen for a while and then start live coding your own changes. See what wild sounds you can make with it! See you next time...",
                "old_state": -1
            },
            "id": 25895597,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895597/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991717/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.819744+02:00",
            "action": 59,
            "target": "`:tb303`",
            "old": "",
            "details": {
                "state": 10,
                "source": "For each standard envelope opt, there's a `cutoff_` equivalent opt in the `:tb303` synth. So, to change the cutoff attack time we can use the `cutoff_attack:` opt. Copy the code above into an empty buffer and hit Run. You'll hear a strange sound warble in and out. Now start to play. Try changing the `cutoff_attack:` time to `1` and then `0.5`. Now try `8`.",
                "old_state": -1
            },
            "id": 25895596,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895596/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991716/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.819614+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "Another opt worth playing with is `res:`. This controls the level of resonance of the filter. A high resonance is characteristic of acid bass sounds. We currently have our `res:` set to `0.8`. Try cranking it up to `0.85`, then `0.9`, and finally `0.95`. You might find that a cutoff such as `110` or higher will make the differences easier to hear. Finally go wild and dial in `0.999` for some insane sounds. At a `res` this high, you're hearing the cutoff filter resonate so much it starts to make sounds of its own!",
                "old_state": -1
            },
            "id": 25895595,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895595/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991715/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.819482+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "Interestingly, Roland never intended for the TB-303 to be used in dance music. It was originally created as a practice aid for guitarists. They imagined that people would program them to play bass lines to jam along to. Unfortunately there were a number of problems: they were a little fiddly to program, didn't sound particularly good as a bass-guitar replacement and were pretty expensive to buy. Deciding to cut their losses, Roland stopped making them after 10,000 units were sold and after a number of years sitting on guitarist's shelves, they soon could be found in the windows of second hand shops. These lonely discarded TB-303s were waiting to be discovered by a new generation of experimenters who started using them in ways that Roland didn't imagine to create wild new sounds. Acid House was born.",
                "old_state": -1
            },
            "id": 25895594,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895594/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991714/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.819349+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "Now, here's the fun part. Whilst the loop is still live, change the `30` in the `use_bpm 30` line to `50`. Woah, everything just got faster yet *kept in time*! Try going faster - up to 80, to 120, now go wild and punch in 200!",
                "old_state": -1
            },
            "id": 25895593,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895593/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991713/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.819185+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "Here, we have two `live_loop`s, one looping quickly making beats and another looping slowly making a wild bass sound.",
                "old_state": -1
            },
            "id": 25895592,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895592/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991712/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.819052+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "There are 4 core ingredients to a `live_loop`. The first is its name. Our `live_loop` above is called `:beats`. You're free to call your `live_loop` anything you want. Go wild. Be creative. I often use names that communicate something about the music they're making to the audience. The second ingredient is the `do` word which marks where the `live_loop` starts. The third is the `end` word which marks where the `live_loop` finishes, and finally there is the body of the `live_loop` which describes what the loop is going to repeat - that's the bit between the `do` and `end`. In this case we're repeatedly playing a bass drum sample and waiting for half a beat. This produces a nice regular bass beat. Go ahead, copy it into an empty Sonic Pi buffer and hit run. Boom, Boom, Boom!.",
                "old_state": -1
            },
            "id": 25895591,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895591/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991711/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.818917+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "The laser beams sliced through the wafts of smoke as the subwoofer pumped bass deep into the bodies of the crowd. The atmosphere was ripe with a heady mix of synths and dancing. However something wasn't quite right in this nightclub. Projected in bright colours above the DJ booth was futuristic text, moving, dancing, flashing. This wasn't fancy visuals, it was merely a projection of Sonic Pi running on a Raspberry Pi. The occupant of the DJ booth wasn't spinning disks, they wrote, edited and evaluated code. Live. This is Live Coding.",
                "old_state": -1
            },
            "id": 25895590,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895590/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991710/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.818758+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "Now, try increasing that feedback to 1 to hear some fun sounds! Read the docs for full details on all the many opts available to you.",
                "old_state": -1
            },
            "id": 25895589,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895589/?format=api"
        },
        {
            "unit": "https://hosted.weblate.org/api/units/76991709/?format=api",
            "component": "https://hosted.weblate.org/api/components/sonic-pi/tutorial/?format=api",
            "translation": "https://hosted.weblate.org/api/translations/sonic-pi/tutorial/id/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2022-05-30T15:44:09.818627+02:00",
            "action": 59,
            "target": "",
            "old": "",
            "details": {
                "state": 0,
                "source": "If you run the code above, you'll notice that Sonic Pi is sending itself an OSC message! This is because we set the IP address to the current machine and the port to the default OSC in port. This is essentially the same as posting a letter to yourself - the OSC packet is created, leaves Sonic Pi, gets to the network stack of the operating system which then routes the packet back to Sonic Pi and then it's received as a standard OSC message and is visible in the cue logger as the incoming message `/osc:127.0.0.1:4560/hello/world`. (Notice how Sonic Pi automatically prefixes all incoming OSC messages with `/osc` and then the hostname and port of the sender.)",
                "old_state": -1
            },
            "id": 25895588,
            "action_name": "String updated in the repository",
            "url": "https://hosted.weblate.org/api/changes/25895588/?format=api"
        }
    ]
}